package ioc16;

import java.beans.PropertyEditorSupport;

/**
 * Author:shixiaojun@itany.com
 * Date:2022/5/17 14:12
 * Version:1.0-SNAPSHOT
 * Description:
 */
public class AddressEditorSupport extends PropertyEditorSupport {

    /**
     * 将一个简单值转换成对象(其他bean)
     * @param text
     * @throws IllegalArgumentException
     */
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        try {
            // 并不是任意一个简单值都能转换成指定的对象
            // 对于需要转换成对象的简单值的格式存在要求
            // 格式判断一般会交给前端来实现
            // 此时要将一个字符串转换成地址对象
            // 要求字符串格式必须为:省份-城市
            String[] arr = text.split("-");
            Address address = new Address();
            address.setProvince(arr[0]);
            address.setCity(arr[1]);
            // 将转换后的其他bean交给Spring
            setValue(address);
        } catch (Exception e) {
            throw new IllegalArgumentException("地址格式有误");
        }
    }
}
